package ormpool

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

// Option 可选项接口
type Option func(*option)

// option 选项实例
type option struct {
	mysqlConfig mysql.Config
	gormConfig  gorm.Config
}

// defaultOption 默认选项
func defaultOption() *option {
	opt := &option{
		mysqlConfig: mysql.Config{},
		gormConfig:  gorm.Config{},
	}

	return opt
}

// WithMysqlConfig 设置mysqlConfig，与数据库连接的默认配置合并
func WithMysqlConfig(config mysql.Config) Option {
	return func(o *option) {
		o.mysqlConfig = config
	}
}

// WithGormConfig 设置gormConfig，与数据库连接的默认配置合并
// nolint: gocritic // hugeParam: config is heavy (136 bytes); consider passing it by pointer
func WithGormConfig(config gorm.Config) Option {
	return func(o *option) {
		o.gormConfig = config
	}
}
